#pragma once

template<typename VTYPE>
class Shape
{
public:
	//virtual inline void setPosition(const V2D<VTYPE> & ApOSITION) = 0;
	//virtual bool collidesWith(const V2D<VTYPE> a_point) const = 0;
	//virtual inline V2D<VTYPE>
	virtual void glDraw()const = 0;
	virtual inline void setPosition(const V2D<VTYPE> & a_position)=0;
	virtual bool collidesWith(const V2D<VTYPE>  a_point) const =0;
	virtual inline V2D<VTYPE> getPosition() const = 0;
	virtual inline void setColor(const int & a_color)=0;
	virtual const int getID() const = 0;
	virtual void setID(const int) = 0;
	virtual bool shapeCollide(const Shape<VTYPE> * MOREShapes) const
	{
		return false;
	}


private:
	int color;
	int ID;
};